package com.qf.mvc01.ex;


import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@RestControllerAdvice
public class MyRestExHandler {

    @ExceptionHandler(UserException.class) // 代表当前的统一异常处理器要返回的是数据而不是页面
    public Map<String,String> userExhandler(UserException ue){
        System.out.println(ue);
        HashMap<String, String> map = new HashMap<>();
        map.put("code",ue.getCode()); //自定义异常编码
        map.put("msg",ue.getMsg());  //自定义异常消息
        map.put("date",new Date().toString()); // 其他要返回的字段可以在map中扩展
        return map;
    }

    @ExceptionHandler(SqlException.class) // 代表当前的统一异常处理器要返回的是数据而不是页面
    public Map<String,String> sqlExhandler(SqlException se){
        se.printStackTrace();
        HashMap<String, String> map = new HashMap<>();
        map.put("code","-1000"); //自定义异常编码
        map.put("msg","数据库链接失败");  //自定义异常消息
        map.put("date",new Date().toString()); // 其他要返回的字段可以在map中扩展
        return map;
    }

    @ExceptionHandler(IOException.class) // 代表当前的统一异常处理器要返回的是数据而不是页面
    public Map<String,String> ioExhandler(IOException io){
        io.printStackTrace();
        HashMap<String, String> map = new HashMap<>();
        map.put("code","250"); //自定义异常编码
        map.put("msg","io异常");  //自定义异常消息
        map.put("date",new Date().toString()); // 其他要返回的字段可以在map中扩展
        return map;
    }
}
